/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ManyToMay;


import javax.persistence.Table;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;


@Entity
@ Table (name = "tab_departamento")
public class Departamento implements java.io.Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    @ GeneratedValue (strategy = GenerationType.IDENTITY)
    private Integer Id_departamento;
    private String codigo;
    private String nome;
    private String sigla;
    
  //  (mappedBy="movimento", cascade = CascadeType.ALL ,orphanRemoval=true)
    @ ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    @JoinTable (name = "tab_departamento_curso",
                joinColumns = @JoinColumn(name = "Id_departamento"),
                inverseJoinColumns = @JoinColumn(name = "Id_curso"))
    List <Curso> cursos = new ArrayList<>();

    public Departamento() {
    }

    public Departamento(String codigo, String nome, String sigla) {
        this.codigo = codigo;
        this.nome = nome;
        this.sigla = sigla;
    }

    public Integer getId_departamento() {
        return Id_departamento;
    }

    public void setId_departamento(Integer Id_departamento) {
        this.Id_departamento = Id_departamento;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSigla() {
        return sigla;
    }

    public void setSigla(String sigla) {
        this.sigla = sigla;
    }

    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 53 * hash + Objects.hashCode(this.Id_departamento);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Departamento other = (Departamento) obj;
        if (!Objects.equals(this.Id_departamento, other.Id_departamento)) {
            return false;
        }
        return true;
    }
    
    
   
}
